import {GoodTwo} from '../../api/model/goods';
export default{
    state: {
        // 定义接口数据
        cartList:[]
    },
    // 计算属性不改变原始值
    getters:{
        // getters是不能接受组件component中的参数的，使用需要用到闭包
        isfood(state:any){
            // 函数返回函数并且获取外部函数的值就是闭包
            // 当前所点击商品的id
            return function (id:number){
                // 遍历获取到的cartlist的所有数据
                for (let i = 0; i < state.cartList.length; i++) {
                    // 如果cartlist中的id等于当前传递的id，也就是当前点击id
                    if(state.cartList[i].id==id){
                        // 返回为真，结束循环
                        return true;
                    }
                    
                }
                return false
            }
        },
        // 通过id找到当前商品数量
        getCount(state:any){
            return function(id:number){
                for (let i = 0; i < state.cartList.length; i++) {
                    // 如果cartlist中的id等于当前传递的id，也就是当前点击id
                    if(state.cartList[i].id==id){
                        return state.cartList[i].count;
                    }
                    
                }
            }
        },
        // 获取所有商品的总金额和总件数
        getTotal(state:any){
            let totalCount=0;
            let totalMoney=0;
            for(let i=0;i<state.cartList.length;i++){
                // 总数量
                totalCount+=state.cartList[i].count;
                // 总价
                totalMoney+=state.cartList[i].count*state.cartList[i].price;
            }
            // 因为vant组件自带俩个小数点
            totalMoney=totalMoney*100;
            return{totalCount,totalMoney}
        },
        // 获取所有购物车商品
        getCart(state:any){
            return state.cartList;
        }
    },
    mutations: {
        // 定义一个添加商品到购物车的方法
        addCart(state:any,payload:GoodTwo){
            // count是自定义的数量的固定参数，payload是前台请求后响应的数据
            state.cartList.push({count:1,...payload})
        },
        // 就是购物车的商品+-改变数量和数据
        // 方法的payload接受属性，一个属性为fn一个属性为商品的id
        setCount(state:any,payload:{fn:string,id:number}){
            for (let i = 0; i < state.cartList.length; i++) {
               if(state.cartList[i].id==payload.id){
                if(payload.fn=="+"){
                    state.cartList[i].count++;
                }else{
                    // --要大于1不然会是负值
                    if(state.cartList[i].count>1){
                        state.cartList[i].count--;
                    }else{
                        // count小于1，就直接把当前cartList的索引数据删了
                        state.cartList.splice(i,1);
                    }
                }
                break;
               }
           
            }
        }
    },
    actions: {
    },
}